package com.yaoq.template;

/**
 * @ClassName SoyaMilk
 * @Description 抽象类，表示豆浆
 * 模板方法， make 不让子类去覆盖
 * @Author yaoqiang
 * @Date 2020/9/1 14:26
 * @Version 1.0
 */
public abstract class SoyaMilk {

    final void make() {
        select();
        if (hasConditions()) {
            addCondiments();
        }

        beat();
    }

    protected boolean hasConditions() {
        return true;
    }


    void select() {
        System.out.println("第一选好豆子");
    }

    /**
     * 添加不同的配料，抽象方法，子类具体实现
     */
    abstract void addCondiments();


    void beat() {
        System.out.println("第三打豆浆");
    }


}
